package com.shiqla.amqp.server;

import com.rabbitmq.client.*;
import com.shiqla.amqp.comm.ProUtils;

import javax.sound.midi.Soundbank;
import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * ━━━━━━神兽出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　　┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　　　　　┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃  神兽保佑
 * 　　　　┃　　　┃  代码无bug
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━感觉萌萌哒━━━━━━
 * Desc ${DESC}
 * Auth Administrator
 * Date 2018/7/12/012
 */
public class Recevice {

    private static String QueueNAME1 = "hello";

    public static void main(String[] args) throws IOException, TimeoutException {
        //构建链接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();

        connectionFactory.setHost(ProUtils.getInstance().getProperties("amqp.host"));
        connectionFactory.setPort(Integer.valueOf(ProUtils.getInstance().getProperties("amqp.port")));
        connectionFactory.setUsername(ProUtils.getInstance().getProperties("amqp.username"));
        connectionFactory.setPassword(ProUtils.getInstance().getProperties("amqp.password"));

        //通过连接工厂链接到rabbitmq 服务器
        Connection connection = connectionFactory.newConnection();
        //链接之后创见一个消息通道
        Channel channel = connection.createChannel();

        //确保队列存在
        channel.queueDeclare(QueueNAME1,false,false,false,null);

        //构建一个消费方,当有消息的时候channel会回调这个类
        Consumer consumer = new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                String str = new String(body);
                System.out.println("请求方发送的数据: " + str);
            }
        };
        channel.basicConsume(QueueNAME1,consumer);
    }
}
